package Day17.FileAndRecursion.Demo01.File;

/**
 * @author hyhWTX
 * @version 1.0
 * @ClassName Demo03File
 * @date 2022年08月26日 19:30
 * @Description: TODO (一句话描述以下该类的功能)
 */

import java.io.File;

/**
 * File类获取功能的方法
 * <p>
 * - public String getAbsolutePath():返回此File的绝对路径名字符串。
 * - public string getPath:将此File转换为路径名字符串。
 * - public string getName():返回由此File表示的文件或目录的名称。
 * - public long length():返回由此File表示的文件的长度。
 */

public class Demo03File {
    public static void main(String[] args) {
//        show01();
//        show02();
//        show03();
        show04();
    }




    /**
     * public String getAbsolutePath():返回此File的绝对路径名字符串。
     * 获取的构造方法中传递的路径
     * 无论路径是绝对的还是相对的，getAbsolutePath方法返回的都是绝对路径
     */
    private static void show01() {
        File f1 = new File("D:\\java黑马\\src\\Day17\\FileAndRecursion\\Demo01\\File\\a.txt");
        String absolutePath1 = f1.getAbsolutePath();
        System.out.println(absolutePath1);

        File f2 = new File("a.txt");
        String absolutePath2 = f2.getAbsolutePath();
        System.out.println(absolutePath2);


    }

    /**
     * public string getPath:将此File转换为路径名字符串。
     * 获取的构造方法中传递的路径
     *
     * toString方法调用的就是getPath方法
     * 源码：
     *  public String toString() {
     *         return getPath();
     *     }
     */

    private static void show02() {
        File f1 = new File("D:\\java黑马\\src\\Day17\\FileAndRecursion\\Demo01\\File\\a.txt");
        File f2 = new File("a.txt");
        String path1 = f1.getPath();
        System.out.println(path1);
        String path2 = f2.getPath();
        System.out.println(path2);

        System.out.println(f1);//D:\java黑马\src\Day17\FileAndRecursion\Demo01\File\a.txt
        System.out.println(f1.toString());//D:\java黑马\src\Day17\FileAndRecursion\Demo01\File\a.txt
    }

    /**
     *public string getName():返回由此File表示的文件或目录的名称。
     *
     * 获取的就是构造方法传递路径的结尾部分（文件/文件夹）
     */

    private static void show03() {
        File f1 = new File("D:\\java黑马\\src\\Day17\\ FileAndRecursion\\Demo01\\File\\a.txt");
        String name1 = f1.getName();
        System.out.println(name1);//a.txt

        File f2 = new File("D:\\java黑马\\src\\Day17\\FileAndRecursion\\Demo01\\File");
        String name2 = f2.getName();
        System.out.println(name2);//File
    }


    /**
     * public long length():返回由此File表示的文件的长度。
     *
     * 获取的构造方法指定的文件大小，以字节为单位
     * 注意：
     *      文件夹是没有大小概念的，不能获取文件夹的大小
     *      如果构造方法中给出的路径不存在，那么length方法返回0
     */
    private static void show04() {
        File f1 = new File("D:\\java黑马\\src\\Day17\\FileAndRecursion\\Demo01\\File\\a.txt");
        long l1 = f1.length();
        System.out.println(l1);//字节为单位


        File f2 = new File("D:\\java黑马\\src\\Day17\\FileAndRecursion\\Demo01\\File\\b.txt");
        long l2 = f2.length();
        System.out.println(l2);

        File f3 = new File("D:\\java黑马\\src\\Day17\\FileAndRecursion\\Demo01\\File");;
        System.out.println(f3.length());
    }
}
